#pragma once

#include <map>

typedef int DecaptcherType;

class Decaptcher;

class DecaptcherFactory
{
public:

	static DecaptcherFactory* Instance(void);

	bool RegisterDecaptcher(DecaptcherType Type, Decaptcher* decaptcher);

	Decaptcher* GetDecaptcher(DecaptcherType Type);

private:
	/* Singleton pattern. */
	DecaptcherFactory();
	
	DecaptcherFactory(const DecaptcherFactory&){}

	static DecaptcherFactory* _instance;

	std::map<DecaptcherType, Decaptcher*> decaptchers;
};